# # name = 'my name is yinhao'
# # print(name)
# # print(name[0])
# # print(name[1])
# # print(name[-6:])
# # print(name[::-1])
# # print(name[3:4])
# #
# #
# # name='\t'
# # print(len(name))
# #
# # name ='阴'
# # age = 21.8
# # print('我的名字是%s,年龄是%d'%(name,age))
# # print('我的名字是'+name+',年龄是'+str(age))
# # print(type(age))
# # print(type(name))
# # a=1
# # b=2
# # print(a>b,type(True))
# #
# # # product=input('您要购买的商品是：')
# # # print('您要购买的是'+product+','+product+'的价格是10元')
# # # num=int(input('您要购买多少个呢？'))
# # # print('您需要支付的金额是：',10*num)
# # #
# # #
# # # print(len(product))
# # # a=5
# # # b=6
# # # print(not a==b)
# # # print(True or True)
# # #
# # # print(r'hello\nworld')
# # # num=str(2**234)
# # # print(num)
# # # print(len(num))
# # list_1=[1,1.5,'阴浩',True]
# # print(type(list_1))
# # tuple_1=(1,1.5,'阴浩',True)
# # print(type(tuple_1))
# # print(list_1[1:2])
# # print(tuple_1[::2])
# #
# # list_2=[2,7,8,3]
# # print(sorted(list_2,reverse=True),end='----')
# # print('python')
# # list_3=['a','fdsh','dhhdskdfew','dhwekuhdeuhdwdd']
# # print(sorted(list_3,key=len,reverse=True))
# #
# # # name=input('你的姓名是')
# # # wel='，这里永远是你的家'
# # # print('你好'+name+',欢迎来到这里'+wel)
# # # print(type(name))
# # num=2**212132
# # print(num)
# # print(len(str(num)))
# # a='472322438974932'
# # print(a[::-1])
# # name=input('姓名：')
# # wel='欢迎加入'
# # print('你好'+name+'，'+wel)
# # name=input('请输入你的姓名')
# # age=input('请输入你的年龄')
# # print('你好，'+name+'欢迎来到这里')
# # list_1=[1,100,'test','True']
# # print(list_1)
# # print(list_1[-1])
# # list_1[-1]=2
# # print(list_1)
# # tuple_1=(1,2,3)
# # print(tuple_1)
# # # tuple_1[0]=2
# # x = ['name','age','sex']
# # y = ['浩',18,'男']
# # print(dict(zip(x,y)))
# # print(type(x))
# # x[0]='姓名'
# # print(dict(zip(x,y)))
# # print(sorted(x,key=len,reverse=True))
# # print
# # product = ['杯子','牙刷','牙膏','毛巾']
# # price = [1.2,1.5,1.0,2.0]
# # shop = dict(zip(product,price))
# # print(shop)
# # product = input('请输入您要购买的商品')
# # print('您要购买的是%s,单价是%5.2f'%(product,shop[product]))
# # num = int(input('请输入您要购买的数量'))
# # # print('请支付:',shop[product]*num)
# # print('请支付:',shop[product]*num)
# # # product_2 = ['杯子','牙刷','牙膏','毛巾']
# # # print(product_2[1])
# a='/'
# b=['1','2','3','4','5','6']
# print(a.join(b))
# c='1/2/3/4/5/6'
# d='/'
# print(c.startswith('1/'))
# print(c.endswith('/6'))
# print('去掉开头或者结尾 空格')
# e='   这里是空格  演示  '
# print(e.strip())
# #左对齐 右对齐 居中
# yanshi='1234567890'
# print(yanshi.ljust(25,'!'))
# print(yanshi.rjust(35,'*'))
# print(yanshi.center(30,'^'))
# #找出值内容开始的位置
# print(yanshi.find('5678'))
# print(yanshi[::-1])
# print(len(yanshi))
# print(yanshi[yanshi.find('3'):yanshi.find('5')+2])
# #replace替换子串，只能生产新的字符串
# print(yanshi.replace('1234','一二三四'))
# print(yanshi)
# #联系去掉前后的空格
# lianxikongge='   前后都有空格  '
# print(lianxikongge.strip())
# #判断值是否是纯数字或者 纯字母
# #isalap 是否纯字母  isdigit是否纯数字
# zimu='zhelishizimu'
# sz='32234242414311423'
# print(zimu.isalpha())
# print(sz.isdigit())
# #追加值 在值的最后 append
# a=[a,5,'python',True]
# a.append('追加的值在最后')
# print(a)
# #删除值 两种方法
# # 第一种为 del 按照值的顺序删除
# # 第二种  remove 移除掉值中的某某 只移除一个
# del a[2]
# print(a)
# list_2=[3,0,6,'m']
# list_2.remove('m')
# print(list_2)
#
#
# # # 1.需求：我的年龄是多少岁
# # age=18
# # print('我的年龄是')
# # #
# # # 2.需求：我的姓名是什么
# # ming='hao'
# # print('我的名字是'+ming+'')
# # name ='阴'
# # age = 21.8
# # print('我的名字是%s,年龄是%d'%(name,age))
# # print('我的名字是'+name+',年龄是'+str(age))
#
# money='16.85422'
# print(type(money))
# money2=eval(money)
# print(type(money2))
# # money_3=eval(str(money_2))
# # print(money_3)
# # print(type(age))
# # print(type(name))
# # 删除值 两种方法
# # 第一种为 del 按照值的顺序删除
# # 第二种  remove 移除掉值中的某某 只移除一个
# a=[a,5,'python',True]
# a.append('追加的值在最后')
# print(a)
# del a[4]
# print(a)
# print('【下边是阴浩对输入内容进行求和的演示作业】')
# a = input('请输入第一个数字：')
# b = input('请输入第一个数字：')
# c = int(a)+int(b)
# print()
# print('好的，\n您输入的第一个数是【%s】 \n第二个数是【%s】\n'
#       '这两个数的和是【%d】'%(a,b,c),end='。')
# print(f'好的，\n您输入的第一个数是{a} \n第二个数是{b}\n'
#       f'这两个数的和是{c}',end='。')
# print('\n')
# print('【下边阴浩是对输入内容实现翻转的演示作业】')
# d=input('请输入您想要实现翻转的内容:')
# print('好的，您输入的内容翻转结果是【',d[::-1],'】')


# 对数据进行合并和分割
# a='88'
# b=['a','b','c','d']
# c=a.join(b)
# print(c)
# d=c.split('8')
# print(d)
# # dict和zip
# x = ['name','age','sex']
# y = ['浩',18,'男']
# print(dict(zip(x,y)))
# print(type(x))
# x[0]='姓名'
# print(dict(zip(x,y)))
# print(sorted(x,key=len,reverse=True))
# print()
# print(1==1 or 2<1)
# score=float(input('请输入您的分数'))
# if score>80:
#     print('您的成绩为优秀')
# elif score>70:
#     print('您的成绩为中等水平')
# elif score>=60:
#     print('您的成绩为及格')
# else:
#     print('您的成绩为不及格')
# print('评分结束')
# print('-----下边是关于if与dict字典等的使用练习----')
# money=float(input('请输入您口袋中一共的金额'))
# print
# product = ['杯子','牙刷','牙膏','毛巾']
# price = [1.2,1.5,1.0,2.0]
# shop = dict(zip(product,price))
# print(shop)
# product = input('请输入您要购买的商品')
# print('您要购买的是%s,单价是%5.2f'%(product,shop[product]))
# num = int(input('请输入您要购买的数量'))
# # print('请支付:',shop[product]*num)
# xiaofei1=float(shop[product]*num)
# print('请支付:',xiaofei1)
# print
# yue1=float(money-xiaofei1)
# print('您还剩余',yue1)
#
# want=input('您还想再买点东西吗')
# if want == '不想':
#     print('好的，购物结束，祝您购物愉快！')
# elif want == '想':
#     print(shop)
#     print
#     product = input('请输入您要购买的商品')
#     print('您要购买的是%s,单价是%5.2f'%(product,shop[product]))
#     num2 = int(input('请输入您要购买的数量'))
#     xiaofei2=float(shop[product]*num2)
#     yue2=float(yue1)-xiaofei2
#     if xiaofei2<=yue1:
#      print('请支付:',xiaofei2)
#      print('您还剩余',yue2)
#     elif xiaofei2>yue1:
#      print('您的余额不足，不建议再次进行消费')
# else:print('请输入【想】或者【不想】哦')
# print('感谢您的使用！')

# for循环练习
# name='yinhao'
# age='18'
# for a in name:
#
#     print(a)
#     for b in age:
#      print(b,'*'*30)
#使用for循环实现join练习
#
# name=('yinhao','lcq','zqs','lyn','ytt')
# name1='&'.join(name)
# print('&'.join(name))
# # print(name1.split('&'))
# print('*'*30)
# ms=''
# for m in name:
#  # print(m)
#
#  if m=='ytt':
#      ms = ms + m
#  else:
#      ms = ms + m + '&'
# print(ms)
# 常用内置函数
# print(len(name))
# print(set(range(1,10)))
#使用for循环实现join  并且按照循环次数并非按照值的练习
# name=('yinhao','lcq','zqs','lyn','ytt')
# name1='&'.join(name)
# print('&'.join(name))
# print('*'*30)
# print(range(len(name)))
# ms=''
# for n in range(len(name)):
#  if n==len(name)-1:
#      ms = ms + name[n]
#  else:
#      ms = ms + name[n] + '&'
# print(ms)
# print('再一次使用for循环实现join 并且按照循环次数并非按照值的练习')
# address=['北京','上海','无锡','西安']
# print('和'.join(address))
# ads=''
# for n in range(len(address)):
#     if n==len(address)-1:
#         ads=ads+address[n]
#     else:
#         ads=ads+address[n]+'和'
# print(ads)
# 自定义函数练习
def yh(x,y):
    return x*2+y

# print(yh(2,3))


# # 九九乘法表使用for循环实现
# for m in range(1,10):
#     for n in range(1,m+1):
#         j=m*n
#         print(f'{m}x{n}={j}',end=' ')
#     print()

# 使用def自定义函数实现找出所有的偶数
def find_double(x,y):

    list_double=[]
    for n in range(x,y+1):
        if n%2==0:
            list_double.append(n)


    return  list_double
# print(find_double(1,10))

# 使用不定长的自定义函数进行演示练习
def aaa(locted,*name):
   for bbbb in name:
       print(f"欢迎{bbbb}来到{locted}")
# aaa("西安",'阴浩','刘','罗')

# 如果是键值对，需要提前 两个*
def shows(name,**infos):
    print(f'大家好，我的名字是{name}')
    for a,b in infos.items():
        print(f'我的{a}是{b}')
# shows('阴浩',年龄=18,地区='陕西',爱好='学习')


# # 类的练习，使用了self之后的
#
# class yhstudy():
#  def aaa(self,locted,name):
#      self.sname=name
#      print(f"欢迎{name}来到{locted}")
# # aaa("西安",'阴浩','刘','罗')
# # 如果是键值对，需要提前 两个*
#  def shows(self,**infos):
#     print(f'大家好，我的名字是{self.sname}')
#     for a,b in infos.items():
#         print(f'我的{a}是{b}')
# # shows('阴浩',年龄=18,地区='陕西',爱好='学习')
# yh_01=yhstudy()
# yh_01.aaa('西安','阴浩')
# yh_01.shows(身高=175,年龄=22,性别='男')
#
# print()
# yn=yhstudy()
# yn.aaa('陕西','罗亚男')
# yn.shows(身高=170,体重=90,年龄=18)

# # 练习自定义函数中的init以及继承
# class yhstudy():
#  def __init__(self,name):
#      # 这里是用init的意思是把下方自定义函数的经常用的一些参数提前进行提取，
#      # 这里用了 init后，下方的对应的参数就需要删除，用的时候直接用这个参数赋值给的
#      # 新的参数就可以了，一旦使用init，就需要在实例化的时候就要进行传参
#      self.sname = name
#  def aaa(self,locted):
#      print(f"欢迎{self.sname}来到{locted}")
# # aaa("西安",'阴浩','刘','罗')
# # 如果是键值对，需要提前 两个*
#  def shows(self,**infos):
#     print(f'大家好，我的名字是{self.sname}')
#     for a,b in infos.items():
#         print(f'我的{a}是{b}')
# # shows('阴浩',年龄=18,地区='陕西',爱好='学习')
#
# class son_yhstudy(yhstudy):
# # 这里使用的是继承，上方子类的括号里需要填写父类的名字，
# # 下方自定义函数的时候括号里需要填写self
#     def over(self):
#         print('希望接下来的日子能够共同进步，加油！')
#
#
# yh_01=son_yhstudy('阴浩')
# # 先对 子类son_yhstudy('阴浩') 实例化再进行下方操作
# yh_01.aaa('西安',)
# yh_01.shows(身高=175,年龄=22,性别='男')
# yh_01.over()
# # 这里加入yh_01.over()不用去进行实例化 init 是因为上方已经对子类进行实例化
# print()
#
# yn=son_yhstudy('罗亚男')
# # 先对 子类son_yhstudy('罗亚男') 实例化再进行下方操作
# yn.aaa('陕西')
# yn.shows(身高=170,体重=80,年龄=18)
# yn.over()
#
# # over_sys=son_yhstudy('阴浩')
# # # 这里相当于对子类进行实例化，在给子类进行实例化的时候同样需要进行传参，
# # # 这里对子类的传参就相当于传给父类上方的init，子类可以使用父类所有的参数，
# # #如果只想在最后一行加就放开这里的注释就可以
# # over_sys.over()

# # 读取文件演示
# test_readfile=open(r'D:\pycharm_git\pycharm_git_demo\read_write_dir\test.txt','r',encoding='utf-8')
# # 第一种使用 for循环读取每一行，然后去掉print和文本后的换行符
# # for line in test_readfile:
# #     print(line.strip())
# # .read() 每次读取整个文件，它通常将读取到底文件内容放到一个字符串变量中，生成文件内容是一个字符串类型。
# # .read(10) 就是返回文件前10个字符
# # .readline()每只读取文件的一行，通常也是读取到的一行内容放到一个字符串变量中，返回str类型。
# # .readlines()每次按行读取整个文件内容，将读取到的内容放到一个列表中，返回list类型。
# # 读写文件中，已经被读取的内容不会被再次读取
# # print(test_readfile.read())
# print(test_readfile.readline())
# # 读取完之后如果想再次读取需要关闭，再打开才可以
# test_readfile.close()
# test_readfile=open(r'D:\pycharm_git\pycharm_git_demo\read_write_dir\test.txt','r',encoding='utf-8')
# print(test_readfile.readlines())

# 写入文件的演示、主要分为w覆盖写和a追加写，写完之后需要关闭，如果再次写，需要再次启动
test_write=open(r'D:\pycharm_git\pycharm_git_demo\read_write_dir\test.txt','a',encoding='utf-8')
test_write.write('\n这是追加写到文件的最后一行的内容')
test_write.close()
test_write=open(r'D:\pycharm_git\pycharm_git_demo\read_write_dir\test.txt','w',encoding='utf-8')
test_write.write('这里是使用了w覆盖写的新内容02')
test_write.close()

# 使用with后的演示，如果使用with,就不用每次去关闭文件再启动文件
# 使用with后需要把最开始的名字使用 as 加新名字，使用：结尾
# with open(r'D:\pycharm_git\pycharm_git_demo\read_write_dir\test.txt','a',encoding='utf-8') as test_a:
#     test_a.write('\n这里是使用了with后进行文件追加写的演示。\n如果使用with,就不用每次去关闭文件再启动文件，会被加到最后一行')
#
# with open(r'D:\pycharm_git\pycharm_git_demo\read_write_dir\test.txt','w',encoding='utf-8') as test_w:
#     test_w.write('这里是使用了with后进行文件覆盖写的演示。\n如果使用with,就不用每次去关闭文件再启动文件，这段代码会把原文件进行清空后再次写入这段文字')

    # print('再一次使用for循环实现join 并且按照循环次数并非按照值的练习')
    # address=['北京','上海','无锡','西安']
    # print('和'.join(address))
    # ads=''
    # for n in range(len(address)):
    #     if n==len(address)-1:
    #         ads=ads+address[n]
    #     else:
    #         ads=ads+address[n]+'和'
    # print(ads)



# for n in range(len(list1)):
#  if list1[n].isdigit():
#      if n==len(list1)-1:
#         print(f'数学成绩是{a},语文成绩是{b},英语成绩是{c},综合成绩是{d}')
#  else:
#         print("格式错误重新输入此门成绩")

# # 使用冒泡算法函数从小到大排列
# def sort_bubble(list_01):
#
#     for m in range(len(list_01)-1):
#         for n in range(len(list_01)-1-m):
#             if list_01[n]>list_01[n+1]:
#                list_01[n],list_01[n+1]=list_01[n+1],list_01[n]
#     return list_01
#
# list_01=[1,23,4,5]
# print(sort_bubble(list_01))

# python+selenium自动化演示代码
# from selenium import webdriver
# import time
#
# driver = webdriver.Chrome()
#
# driver.get('http://www.bcbxhome.com')
#
# time.sleep(5)

# 1.练习九九乘法表
# for b in range(1,10):
#     for a in range(1,b+1):
#         print(f"{a}*{b}={a*b}",end='\t')
#     print()
#
# # 2. 练习冒泡算法
def bubble(list):
    for m in range(len(list)-1):
        for n in range(len(list)-1-m):
            if list[n]>list[n+1]:
                list[n],list[n+1]=list[n+1],list[n]
    return list

# list=[3,6,4,1,7,8,0]
# print(bubble(list))
# # 3.要求1)：请依次让用户输入数学、语文、英语、综合成绩，用，隔开：'
# # 要求2)：判断用户的四门成绩格式是否为纯数字，格式错误重新输入此门成绩，格式正确转成整型放回到列表中
# # 要求3)：调用冒泡函数
# # 要求4：输出最高成绩
#
# yu_sco=input('请输入语文成绩：')
# sh_sco=input('请输入数学成绩：')
# yi_sco=input('请输入英语成绩：')
# zo_sco=input('请输入综合成绩：')
# list_sub=['语文','数学','英语','综合']
# list_sco=[yu_sco,sh_sco,yi_sco,zo_sco]
# dict_sco=dict(zip(list_sub,list_sco))
#
# while not (yu_sco.isdigit() and sh_sco.isdigit() and yi_sco.isdigit() and zo_sco.isdigit()):
#
#         print("格式错误,请重新输入成绩")
#         yu_sco = input('请输入语文成绩：')
#         sh_sco = input('请输入数学成绩：')
#         yi_sco = input('请输入英语成绩：')
#         zo_sco = input('请输入综合成绩：')
#
#
# print(f'你的语文成绩是{yu_sco},数学成绩时候{sh_sco}\n'
#                    f'英语成绩是{yi_sco},综合成绩是{zo_sco}')
#
# list=[yu_sco,sh_sco,yi_sco,zo_sco]
# print('这几门成绩调用冒泡算法的结果如下：')
# print(bubble(list))
# print('最高的成绩是',max(list))
# #
# # 4.猜数字游戏
# #
# # 代码中生成一个[1,100]之间的随机整数. 用户输入猜测的数字后,
# # 程序提示用户的输入是高了还是低了. 直到用户猜中这个数字,
# # 游戏结束. 提示, random模块的randint函数能够帮助我们生成随机整数.
# import random
# num =random.randint(1,100)
# print('答案是',num,'不要告诉其他人哦')
# print('猜数字游戏，现在开始！\n ')
# user_num=float(input('请输入你猜的数字'))
# while not(user_num==num):
#     if user_num>num:
#         print('稍微大了哦，再往小猜猜')
#         user_num=float(input('请输入你猜的数字'))
#     elif user_num<num:
#         print('稍微小了哦，再往大猜猜')
#         user_num=float(input('请输入你猜的数字'))
# else :
#         print('恭喜你猜对啦，游戏结束')
# #
#
# # 5.打开一个txt文本，将一首诗写入此文本，
# # 2)读取这个文本，打印诗词内容
# read_shi=open(r'D:\pycharm_git\pycharm_git_demo\read_write_dir\read_shi.txt','r',encoding='utf-8')
# print(read_shi.read())

# # 6定义一个长方形类，实例化时需要传入参数：长、宽（使用__init__方法）
# # 拥有两个方法：
# # 1)求周长
# # 2)求面积
# # 实例化这个类，调用他的两个方法
#
# class oblong():
#     def __init__(slef,long,wide):
#         slef.chang=long
#         slef.kuan=wide
#
#     def girth(self):
#         zhouchang=(self.chang+self.kuan)*2
#         return zhouchang
#     def area(self):
#         mianji=self.chang*self.kuan
#         return mianji
# cfx=oblong(5,2)
# print(cfx.girth())
# print(cfx.area())
#对猜数字进行输入的校验的练习

# import random
# num =random.randint(1,100)
# print('答案是',num,'不要告诉其他人哦')
# print('猜数字游戏，现在开始！\n ')
# user_num=input('请输入你猜的数字')
# while not user_num.isdigit():
#     user_num= input("输入格式错误，请输入数字：")
# user_num=int(user_num)
# while not(user_num==num):
#     if float(user_num)>num:
#         print('稍微大了哦，再往小猜猜')
#         user_num=input('请输入你猜的数字')
#     elif float(user_num)<num:
#         print('稍微小了哦，再往大猜猜')
#         user_num=input('请输入你猜的数字')
# print('恭喜你猜对啦，游戏结束')
# import random
# num = random.randint(1,100)
# print(num)
# num1 =input("请输入数字：")
# while  not num1.isdigit():
#   num1=input("请输入纯数字")
# num1=int(num1)
#
# while not num1 == num:
#     if num1 > num:
#         print("数字大了")
#     elif num1 < num:
#         print("数字小了")
#     num1 = int(input("请输入数字："))
# print("游戏结束")

# python+selenium自动化演示代码

# 第一种UI自动化通过ID定位控件
# from selenium import webdriver
# # 先导入webdriver
# driver = webdriver.Chrome()
# # 相当于对模块中的类进行实例化，这段代码会打开浏览器
# driver.get('http://101.133.169.100/yuns/index.php')
# # 打开XXX网页
# driver.find_element_by_id('cart_num').click()
# 通过ID去定位控件，click可以实现对控件的点击

# 第二种UI自动化通过name定位控件
# from selenium import webdriver
# # 先导入webdriver
# driver = webdriver.Chrome()
# # 相当于对模块中的类进行实例化，这段代码会打开浏览器
# driver.get('http://101.133.169.100/yuns/index.php')
# # 打开XXX网页
# driver.find_element_by_name('key').send_keys('XXX')
# 通过name去定位控件，send_keys可以对输入框进行输入

# 第三种UI自动化通过class name定位控件
# from selenium import webdriver
# # 先导入webdriver
# driver = webdriver.Chrome()
# # 相当于对模块中的类进行实例化，这段代码会打开浏览器
# driver.get('http://101.133.169.100/yuns/index.php')
# # 打开XXX网页
# driver.find_element_by_class_name('but2').click()
# # 通过class name去定位控件,再进行点击

# 特殊情况需要注意复合类，比如中间有空格，不建议用class name进行定位


# jifen=input('请输入你在编测编学网站的积分')
# jifen=int(jifen)
# if jifen<10000:
#     print('初入江湖')
# elif jifen>=10000 and jifen<30000:
#     print('小有名气')
# else:
#     print('测试大牛')

# 读取文件演示
test_readfile=open(r'D:\pycharm_git\pycharm_git_demo\read_write_dir\count_test.txt','r',encoding='utf-8')
# 第一种使用 for循环读取每一行，然后去掉print和文本后的换行符
# for line in test_readfile:
#     print(line.strip())
# .read() 每次读取整个文件，它通常将读取到底文件内容放到一个字符串变量中，生成文件内容是一个字符串类型。
# .read(10) 就是返回文件前10个字符
# .readline()每只读取文件的一行，通常也是读取到的一行内容放到一个字符串变量中，返回str类型。
# .readlines()每次按行读取整个文件内容，将读取到的内容放到一个列表中，返回list类型。
# 读写文件中，已经被读取的内容不会被再次读取
# print(test_readfile.read())
# test_readfile.read().count('阴')

# text=test_readfile.read()
# print(text)
# print(type(text))
# print(text.count('阴')) #输出文档中有多少个‘阴’
# test_readfile.close()